/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package cl.ejemplo.model;

import cl.ejemplo.beans.Ropa;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author CACO
 */
public class Reportes_mod extends Conexion {

    /**
     *
     * @return indica la cantidad de ropa que queda en ese instante.
     */
    public int recibirAlerta() { //OK
        int cantidad = 0;
        try {
            StringBuilder sb = new StringBuilder();
            sb.append("select count(cant_ropa) from ropa where disponibilidad=1 ");
            ResultSet rs = ObtenerConsulta(sb.toString());
            while (rs.next()) {
               cantidad = rs.getInt("cant_ropa");
            }
        } catch (SQLException ex) {
            Logger.getLogger(UnidadC_mod.class.getName()).log(Level.SEVERE, null, ex);
        }
        return cantidad;
    }

    /**
     *
     * @return Las deudas de ropa de cada funcionario (auxiliar), 
     *         la unidad clínica a la que se fue la ropa y esta última (datos básicos de la ropa).
     */
    public ArrayList verDeudas() { //OK
        ArrayList deudas = new ArrayList();
        try {
            StringBuilder sb = new StringBuilder();
            sb.append("select f.nombrec, f.apellidop, f.apellidom, uc.nombre, p.cant_prest, p.fecha_prest, p.fecha_dev, p.deuda, p.exceso_ropa, p.observacion from prestamo p, funcionario f, ropa r, unidadc uc  where f.id_funcionario=p.id_funcionario and p.id_ropa=r.id_ropa and uc.id_unidadc= p.id_unidadc");
            ResultSet rs = ObtenerConsulta(sb.toString());
            while (rs.next()) {
                System.out.println(deudas.add(rs.getString("f.nombrec")));
                System.out.println(deudas.add(rs.getString("f.apellidop")));
                System.out.println(deudas.add(rs.getString("f.apellidom")));
                System.out.println(deudas.add(rs.getString("uc.nombre")));
                System.out.println(deudas.add(rs.getInt("p.cant_prest")));
                System.out.println(deudas.add(rs.getDate(" p.fecha_prest").toLocaleString()));
                System.out.println(deudas.add(rs.getDate("p.fecha_dev").toLocaleString()));
                System.out.println(deudas.add(rs.getInt("p.deuda")));
                System.out.println(deudas.add(rs.getInt("p.exceso_ropa")));
                System.out.println(deudas.add(rs.getString(" p.observacion")));
            }
        } catch (SQLException ex) {
            Logger.getLogger(UnidadC_mod.class.getName()).log(Level.SEVERE, null, ex);
        }
        return deudas;
    }

    /**
     *
     * @return El desempeño de cada funcionario, permitiendo evaluarlo. Los funcionarios que tengan deuda = 0
     */
    public ArrayList verMeritos() { 
        ArrayList meritos = new ArrayList();
        try{
            StringBuilder sb = new StringBuilder();
            sb.append("Select f.nombrec,f.apellidop,apellidom,f.rol,p.dueda,p.fecha_prest,p.fecha_dev, uc nombre,f.id_fucionario,uc.id_unidadc,r.id_ropa");
            sb.append(" from funcionario f, prestamo p , unidadc uc, ropa r where p.id_funcionario = f.id_funcionario and p.id_ropa = r.id_ropa and p.id_unidadc = uc.id_unidadc and deuda = 0");
            ResultSet rs = ObtenerConsulta(sb.toString());
            while (rs.next()){
               // meritos.add(rs.getString("f.nombrec"),rs.getString("f.apellidop"),rs.getString("f.apellidom"),rs.getString("f.rol"),rs.getString("uc.nombre"),rs.getInt("p.deuda"),rs.getDate("p.fecha_prest").toLocaleString(),rs.getDate("p.fecha_dev").toLocaleString());
            }
            } catch (SQLException ex) {
            Logger.getLogger(Reportes_mod.class.getName()).log(Level.SEVERE, null, ex);
        
        }
        return meritos;
    }

    /**
     *
     * @return El reporte de deudas y excesos de ropa que tiene una lavandería externa. Permite tener un seguimiento del desempeño de la lavandería contratada.
     */
    public ArrayList verReportesL() { //OK
        ArrayList prest = new ArrayList();
        try {
            StringBuilder sb = new StringBuilder();
            sb.append("select c.id_comprobante, r.nombre, plav.fecha_env, plav.fecha_recib, plav.deuda, le.nombre, c.ropa_env, c.ropa_recib, plav.exceso_ropa from comprobante c, prestamolav plav, ropa r , lavanderiae le where plav.id_comprobante=c.id_comprobante and c.id_lavanderiae = le.id_lavanderiae and plav.id_ropa=r.id_ropa;");
            ResultSet rs = ObtenerConsulta(sb.toString());
            while (rs.next()) {
                System.out.println(prest.add(rs.getInt("c.id_comprobante")));
                System.out.println(prest.add(rs.getString("r.nombre")));
                System.out.println(prest.add(rs.getDate("plav.fecha_env").toLocaleString()));
                System.out.println(prest.add(rs.getDate("plav.fecha_recib").toLocaleString()));
                System.out.println(prest.add(rs.getInt(" plav.deuda")));
                System.out.println(prest.add(rs.getString("le.nombre")));
                System.out.println(prest.add(rs.getInt("c.ropa_env")));
                System.out.println(prest.add(rs.getInt("c.ropa_recib")));
                System.out.println(prest.add(rs.getInt("plav.exceso_ropa")));


            }
        } catch (SQLException ex) {
            Logger.getLogger(Reportes_mod.class.getName()).log(Level.SEVERE, null, ex);
        }
        return prest;
    }

    /**
     *
     * @return Los reportes de 
     */
    public ArrayList verReportesF()  {//OK
        ArrayList prest = new ArrayList();
        try {
            StringBuilder sb = new StringBuilder();
            sb.append("select f.nombrec, f.apellidop, f.apellidom, uc.nombre, r.nombre, p.cant_prest, p.fecha_ing, p.fecha_dev, p.deuda, p.exceso_ropa,  p.observacion  from funcionario f, unidac uc, prestamo p, ropa r where uc.id_unidadc =p.id_unidadc and f.id_funcionario= p.id_funcionario and r.id_ropa=p.id_ropa");
            ResultSet rs = ObtenerConsulta(sb.toString());
            while (rs.next()) {
                System.out.println(prest.add(rs.getString("f.nombrec")));
                System.out.println(prest.add(rs.getString("f.apellidop")));
                System.out.println(prest.add(rs.getString("f.apellidom")));
                System.out.println(prest.add(rs.getString("uc.nombre")));
                System.out.println(prest.add(rs.getString("r.nombre")));
                System.out.println(prest.add(rs.getString("p.cant_prest")));
                System.out.println(prest.add(rs.getDate("p.fecha_ing").toLocaleString()));
                System.out.println(prest.add(rs.getDate("p.fecha_dev").toLocaleString()));
                System.out.println(prest.add(rs.getString("p.deuda")));
                System.out.println(prest.add(rs.getString("p.exceso_ropa")));
                System.out.println(prest.add(rs.getString("p.observacion")));

            }
        } catch (SQLException ex) {
            Logger.getLogger(Reportes_mod.class.getName()).log(Level.SEVERE, null, ex);
        }
        return prest;
    }

    /**
     *
     * @return Los datos de la ropa limpia que queda en la ropería, esto permite saber cuánto stock limpio queda.
     */
    public ArrayList<Ropa> verRoperia() { //OK
        ArrayList<Ropa> rop = new ArrayList<>();
        try {
            StringBuilder sb = new StringBuilder();
            sb.append("select * from ropa where  estado_ropa=limpio and disponibilidad=1 ");
            ResultSet rs = ObtenerConsulta(sb.toString());
            while (rs.next()) {
                System.out.println(rop.add(new Ropa(rs.getString("nombre"), rs.getString("color"), rs.getInt("cant_ropa"), rs.getString("estado_ropa"), rs.getString("talla"))));
            }
        } catch (SQLException ex) {
            Logger.getLogger(UnidadC_mod.class.getName()).log(Level.SEVERE, null, ex);
        }
        return rop;
    }

}
